#ifndef GROUPCONTROL_H
#define GROUPCONTROL_H

#include <QWidget>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QGroupBox>
#include <QSpinBox>
#include <QDoubleSpinBox>
#include <QLabel>

#include "defines.h"

class GroupControl : public QWidget {
 Q_OBJECT
public:
  GroupControl(QWidget *parent = 0);

  double getWidth() { return bSpinBox->value(); };
  double getHeight() { return hSpinBox->value(); };
  double getRHeight() { return hrSpinBox->value(); };
  int getGr() { return grSpinBox->value(); };
 
public slots:
  void setWidth(double newVal) { bSpinBox->setValue(newVal); };
  void setHeight(double newVal) { hSpinBox->setValue(newVal); };
  void setRHeight(double newVal) { hrSpinBox->setValue(newVal); };
  void setGr(int newVal) { grSpinBox->setValue(newVal); };

  void setWidthEnabled(bool val) { bSlider->setEnabled(val); bSpinBox->setEnabled(val); };
  void setHeightEnabled(bool val) { hSlider->setEnabled(val); hSpinBox->setEnabled(val); };
  void setRHeightEnabled(bool val) { hrSlider->setEnabled(val); hrSpinBox->setEnabled(val); };
  void setGrEnabled(bool val)  { grSlider->setEnabled(val); grSpinBox->setEnabled(val); };

protected:
  //Конвертирование кодировки
  QTextCodec * russianCodec;

  QLabel * bLabel;
  QSlider * bSlider;
  QDoubleSpinBox * bSpinBox;

  QLabel * hLabel;
  QSlider * hSlider;
  QDoubleSpinBox * hSpinBox;

  QLabel * hrLabel;
  QSlider * hrSlider;
  QDoubleSpinBox * hrSpinBox;

  QLabel * grLabel;
  QSlider * grSlider;
  QSpinBox * grSpinBox;

  QGroupBox * groupBox;

  //Убирает незначащие цифры после запятой
  double toPrec(double num) { double d = fmod(num, 0.01); return  num - d + double(rint(d * 1000))/1000; };

signals:
  void callCalcWithNewB(double newVal);
  void callCalcWithNewH(double newVal);
  void callCalcWithNewHR(double newVal);
  void callCalcWithNewAngle(int newVal);
  void callUpdateStatus(const QString & newMes);

private slots:
  //Выводит сообщение изменения угла в статус бар
  void mesChangeGr(int newVal);

  //Функции для синхронизации spinBox/scrollBox
  void getBDoubleValue(int val);
  void setBDoubleValue(double dVal);
  void getHDoubleValue(int val);
  void setHDoubleValue(double dVal);
  void getHRDoubleValue(int val);
  void setHRDoubleValue(double dVal);

}; //class GroupControl : public QWidget

#endif
